const { build } = require('esbuild')
const getScanPlugin = require('./getScanPlugin')
const path = require('path')
/**
 * 扫描项目中导入的第三方模块
 * @param {*} config
 */
async function scanImports(config) {
  // 此处存在依赖导入
  const depImports = []
  // 创建esbuild的扫描插件
  const scanPlugin = await getScanPlugin(config, depImports)
  await build({
    absWorkingDir: config.root, // 当前的工作目录
    entryPoints: [path.resolve('./index.html')], // 指定编译的入口
    bundle: true, // 是否打包
    format: 'esm', // 指定输出的格式
    outfile: './dist/bundle.js', // 输出的文件名
    write: false, // 是否写入文件 在真实代码中 值为false , 在测试代码中 值为true 。其实不需要写入文件，因为我们只是需要扫描依赖
    plugins: [scanPlugin], // 插件
  })
  return depImports
}

module.exports = scanImports
